package com.smartbus.bus.mapper;

import java.util.List;
import com.smartbus.bus.domain.StationDistance;

/**
 * 站点间距离预计算Mapper接口
 *
 * @author smartbus
 * @date 2024-09-24
 */
public interface StationDistanceMapper
{
    /**
     * 查询站点间距离预计算
     *
     * @param id 站点间距离预计算主键
     * @return 站点间距离预计算
     */
    public StationDistance selectStationDistanceById(Long id);

    /**
     * 查询站点间距离预计算列表
     *
     * @param stationDistance 站点间距离预计算
     * @return 站点间距离预计算集合
     */
    public List<StationDistance> selectStationDistanceList(StationDistance stationDistance);

    /**
     * 查询可步行换乘的站点对
     *
     * @return 可步行换乘的站点距离列表
     */
    public List<StationDistance> selectWalkableDistances();

    /**
     * 查询指定站点的可换乘站点
     *
     * @param fromStationId 起始站点ID
     * @return 可换乘的站点距离列表
     */
    public List<StationDistance> selectTransferableStations(Integer fromStationId);

    /**
     * 查询两个站点间的距离
     *
     * @param fromStationId 起始站点ID
     * @param toStationId 目标站点ID
     * @return 站点间距离信息，如果不存在返回null
     */
    public StationDistance selectDistanceBetweenStations(Integer fromStationId, Integer toStationId);

    /**
     * 新增站点间距离预计算
     *
     * @param stationDistance 站点间距离预计算
     * @return 结果
     */
    public int insertStationDistance(StationDistance stationDistance);

    /**
     * 修改站点间距离预计算
     *
     * @param stationDistance 站点间距离预计算
     * @return 结果
     */
    public int updateStationDistance(StationDistance stationDistance);

    /**
     * 删除站点间距离预计算
     *
     * @param id 站点间距离预计算主键
     * @return 结果
     */
    public int deleteStationDistanceById(Long id);

    /**
     * 批量删除站点间距离预计算
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteStationDistanceByIds(Long[] ids);

    /**
     * 重新计算并更新所有站点间距离
     *
     * @return 影响的记录数
     */
    public int recalculateStationDistances();

    /**
     * 清空距离预计算表
     *
     * @return 影响的记录数
     */
    public int truncateStationDistances();
}